

# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import time
import os


# #dir="C:\\Users\\admin\\Desktop\\selenium-practice\\0823\\sortedfile"
# list=os.listdir(dir)
# list.sort(key=lambda fn:os.path.getmtime(dir+'\\'+fn))
# list代表一个文件的列表，将list的元素作为lambda固定函数的入参，而dir代表一个文件夹的路径，所以要加上后面具体的文件（+"fn"也就是加上list元素）才能使用geetmtime方法。


# In [36]: p = lambda x, y: x *y         lambda 后面x,y是参数 ，：号后面的是表达式， p相当于接受匿名函数的返回值
#
# In [37]: c = p(2,3)     p加括号传参，调用lambda函数， 得到运算 2 * 3 结果 6
#
# In [38]: print(c)      打印结果c
# 6                      得到结果值6


# 请按alist中元素的age由大到小排序
#
# alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]
#
# def  sort_by_age(list1):
#       return sorted(alist, key=lambda x : x['age'], reverse=True)



def find_report_name():
    #"""查找最后生成的报告文件的路径"""
    #查找绝对路径
    result_dir = os.path.abspath('..') + "\\SmallShop\\report\\"
    #将指定的文件夹下的文件以及文件夹的名字作为列表返回
    lists = os.listdir(result_dir)
    #把路径下的文件夹最后修改的时间进行正序排序
    lists.sort(key=lambda fn: os.path.getmtime(result_dir + "\\" + fn))
    #拼接路径
    file_name = os.path.join(result_dir, lists[-1])
    return file_name

def send_email(report_file):
    """发送邮件方法"""
    try:
        # 配置邮件信息
        # 接收邮箱
        receiver = "726696107@qq.com"
        # 发送邮件服务器
        smtp_server = "smtp.qq.com"
        port = "25"
        # 发送邮箱账号和密码（授权码）
        username = "705266117@qq.com"
        password = "nqthulrzlpavbdbf"

        # 读取测试报告文件
        mail_body = open(report_file, "r", encoding="utf-8").read()
        # 定义邮件内容
        msg = MIMEMultipart()
        body = MIMEText(mail_body, _subtype='html', _charset='utf-8')
        msg['Subject'] = u"自动化测试报告"
        msg['from'] = username
        msg['to'] = receiver
        msg["date"] = time.strftime('%a, %d %b %Y %H:%M:%S %z')
        msg.attach(body)
        # 定义附件内容
        att = MIMEText(mail_body, "base64", "utf-8")
        att["Content-Type"] = "application/octet-stream"
        att["Content-Disposition"] = 'attachment; filename= "report.html"'
        msg.attach(att)

        # 连接邮箱服务器
        smtp = smtplib.SMTP('smtp.qq.com')
        smtp.connect('smtp.qq.com', port=25)
        # tls加密方式
        smtp.ehlo()
        smtp.starttls()
        smtp.ehlo()
        # 登录邮箱
        smtp.login(username, password)
        # 发送邮件
        smtp.sendmail(username, receiver, msg.as_string())
        # 断开连接
        smtp.quit()
        print("%s 发送成功,查收%s邮箱" % (username, receiver))
    except Exception as e:
        print(e)


def send_report():
    """发送测试报告"""
    send_email(find_report_name())